<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Source</name>
    </assembly>
    <members>
        <member name="T:ExpressionCombiner">
            <summary>
            Combines linq expressions using logic operators And and Or.
            </summary>
            <remarks>
            This code was taken from the MSDN Blog meek: LINQ to Entities: Combining Predicates
            http://blogs.msdn.com/b/meek/archive/2008/05/02/linq-to-entities-combining-predicates.aspx
            </remarks>
            <nuget id="netfx-System.Linq.Expressions.ExpressionCombiner" />
        </member>
        <member name="T:EventQueryCriteria`1">
            <summary>
            Represents the filter criteria for a domain event store query.
            </summary>
            <typeparam name="TObjectId">The type of identifier used by the domain objects in the domain.</typeparam>
            <nuget id="netfx-Patterns.EventSourcing"/>
        </member>
        <member name="M:EventQueryCriteria`1.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:EventQueryCriteria`1"/> class.
            </summary>
        </member>
        <member name="P:EventQueryCriteria`1.ObjectInstances">
            <summary>
            List of source object type + instance identifier filters. The two filters 
            should be considered by event stores as AND'ed (i.e. 
            events for <c>Product AND Id = 5</c>) and each entry is OR'ed with the 
            others (i.e. <c>(Product AND Id = 5) OR (Order AND Id = 1)</c>.
            </summary>
        </member>
        <member name="P:EventQueryCriteria`1.ObjectTypes">
            <summary>
            List of object type filters. All types added are OR'ed with the 
            others (i.e. <c>ObjectType == Product OR ObjectType == Order</c>).
            </summary>
            <remarks>
            To filter by object type and identifier, 
            use <see cref="P:EventQueryCriteria`1.ObjectInstances"/> instead.
            </remarks>
        </member>
        <member name="P:EventQueryCriteria`1.EventTypes">
            <summary>
            List of event type filters. All types added are OR'ed with the 
            others (i.e. <c>EventType == ProductCreated OR EventType == ProductPublished</c>).
            </summary>
        </member>
        <member name="P:EventQueryCriteria`1.Since">
            <summary>
            Filters events that happened after the given starting date.
            </summary>
        </member>
        <member name="P:EventQueryCriteria`1.Until">
            <summary>
            Filters events that happened before the given ending date.
            </summary>
        </member>
        <member name="P:EventQueryCriteria`1.IsExclusiveRange">
            <summary>
            If set to <see langword="true"/>, <see cref="P:EventQueryCriteria`1.Since"/> and <see cref="P:EventQueryCriteria`1.Until"/> should 
            be considered as exclusive ranges (excludes values with a matching date). 
            Defaults to <see langword="false"/>, meaning that ranges are inclusive by default.
            </summary>
        </member>
        <member name="T:EventQueryCriteria`1.ObjectFilter">
            <summary>
            Filter criteria containing the object type and identifier. 
            </summary>
        </member>
        <member name="M:EventQueryCriteria`1.ObjectFilter.#ctor(System.Type,`0)">
            <summary>
            Initializes a new instance of the <see cref="T:EventQueryCriteria`1.ObjectFilter"/> class.
            </summary>
            <param name="objectType">Type of the event source to filter by.</param>
            <param name="objectId">The domain object identifier to filter by.</param>
        </member>
        <member name="P:EventQueryCriteria`1.ObjectFilter.ObjectType">
            <summary>
            Gets or sets the type of the domain object to filter by.
            </summary>
        </member>
        <member name="P:EventQueryCriteria`1.ObjectFilter.ObjectId">
            <summary>
            Gets or sets the domain object identifier to filter by.
            </summary>
        </member>
        <member name="T:IStoredEvent`1">
            <summary>
            Represents a persisted event in an event store.
            </summary>
            <remarks>
            The core interface does not expose the event payload, 
            as its representation as well as specific storage type
            and serialization/deserialization can vary wildly 
            across store implementation. Imposing a particular 
            representation via this interface would be unnecessarily 
            restrictive and is not needed for the rest of the APIs.
            </remarks>
            <typeparam name="TObjectId">The type of identifier used by the domain objects in the domain.</typeparam>
            <nuget id="netfx-Patterns.EventSourcing.Queryable"/>
        </member>
        <member name="P:IStoredEvent`1.ObjectId">
            <summary>
            Gets the domain object identifier that the event applies to.
            </summary>
        </member>
        <member name="P:IStoredEvent`1.ObjectType">
            <summary>
            Gets the type of the the domain object that this event applies to.
            </summary>
        </member>
        <member name="P:IStoredEvent`1.EventId">
            <summary>
            Gets the event id.
            </summary>
        </member>
        <member name="P:IStoredEvent`1.EventType">
            <summary>
            Gets the type of the event.
            </summary>
        </member>
        <member name="P:IStoredEvent`1.Timestamp">
            <summary>
            Gets the timestamp of the event.
            </summary>
        </member>
        <member name="T:DomainObject`2">
            <summary>
            Base class for domain classes that raise and optionally consume 
            event objects in an event sourcing pattern style implementation.
            </summary>
            <typeparam name="TObjectId">The type of identifier used by the domain object.</typeparam>
            <typeparam name="TBaseEvent">The base type or interface implemented by events.</typeparam>
            <nuget id="netfx-Patterns.EventSourcing" />
        </member>
        <member name="M:DomainObject`2.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:DomainObject`2"/> class.
            </summary>
            <remarks>
            Derived classes decide if they allow direct instantiation or 
            if instantiation always has to happen from a stream of events.
            </remarks>
        </member>
        <member name="M:DomainObject`2.AcceptEvents">
            <summary>
            Clears the internal events retrieved from <see cref="M:DomainObject`2.GetEvents"/>, 
            signaling that all pending events have been commited.
            </summary>
        </member>
        <member name="M:DomainObject`2.GetEvents">
            <summary>
            Gets the new events that were applied by the domain object.
            </summary>
        </member>
        <member name="M:DomainObject`2.Handles``1(System.Action{``0})">
            <summary>
            Configures a handler for an event. 
            </summary>
        </member>
        <member name="M:DomainObject`2.Load(System.Collections.Generic.IEnumerable{`1})">
            <summary>
            Loads the the domain object from an even stream.
            </summary>
        </member>
        <member name="M:DomainObject`2.Apply``1(``0)">
            <summary>
            Applies an event to the entity. 
            The derived class should invoke <see cref="M:DomainObject`2.Handles``1(System.Action{``0})"/> 
            to configure the handlers for specific types of events. The 
            handlers perform the actual state changes to the entity.
            </summary>
        </member>
        <member name="P:DomainObject`2.Id">
            <summary>
            Gets or sets the identifier of the domain object.
            </summary>
        </member>
        <member name="T:IQueryableEventStore`3">
            <summary>
            Provides a common API for event stores that leverage Linq.
            </summary>
            <typeparam name="TObjectId">The type of identifier used by domain objects in the domain.</typeparam>
            <typeparam name="TBaseEvent">The base type or interface implemented by events in the domain.</typeparam>
            <typeparam name="TStoredEvent">The type of the stored event.</typeparam>
        </member>
        <member name="T:IEventStore`2">
            <summary>
            Interface implemented by domain event stores.
            </summary>
            <typeparam name="TObjectId">The type of identifier used by the domain objects in the domain.</typeparam>
            <typeparam name="TBaseEvent">The base type or interface implemented by events in the domain.</typeparam>
            <nuget id="netfx-Patterns.EventSourcing"/>
        </member>
        <member name="M:IEventStore`2.Commit">
            <summary>
            Commits the changes persisted so far, in a unit of work style.
            </summary>
        </member>
        <member name="M:IEventStore`2.Persist(DomainObject{`0,`1})">
            <summary>
            Persists the pending events in the domain object and accepts 
            the changes.
            </summary>
            <param name="entity">The domain object raising the events.</param>
        </member>
        <member name="M:IEventStore`2.Query(EventQueryCriteria{`0})">
            <summary>
            Queries the event store for events that match the given criteria.
            </summary>
            <remarks>
            Store implementations are advised to provide full support for the 
            specified criteria, but aren't required to.
            <para>
            An alternative fluent API to build the criteria object is available 
            by executing the  <see cref="M:EventQueryExtension.Query``2(IEventStore{``0,``1})"/> 
            extension method on an event store instance.
            </para>
            </remarks>
        </member>
        <member name="P:IQueryableEventStore`3.Events">
            <summary>
            Gets the stream of events persisted by the store.
            </summary>
        </member>
        <member name="T:EventQueryExtension">
            <summary>
            Provides the entry point <see cref="M:EventQueryExtension.Query``2(IEventStore{``0,``1})"/> for a fluent API 
            that makes querying event stores easier.
            </summary>
            <nuget id="netfx-Patterns.EventSourcing"/>
        </member>
        <member name="M:EventQueryExtension.Query``2(IEventStore{``0,``1})">
            <summary>
            Queries the event store for events that match specified 
            criteria via the returned fluent API methods 
            <see cref="M:EventQueryExtension.IEventQuery`2.For``1"/> and 
            <see cref="M:EventQueryExtension.IEventQuery`2.OfType``1"/>. 
            </summary>
            <typeparam name="TObjectId">The type of identifier used by the domain objects in the domain.</typeparam>
            <typeparam name="TBaseEvent">The base type or interface implemented by events in the domain.</typeparam>
            <param name="store">The domain event store.</param>
        </member>
        <member name="T:EventQueryExtension.IEventQuery`2">
            <summary>
            Provides a fluent API to filter events from the event store. 
            </summary>
            <remarks>
            This interface is returned from the <see cref="M:EventQueryExtension.Query``2(IEventStore{``0,``1})"/> 
            extension method for <see cref="T:IEventStore`2"/>.
            </remarks>
            <typeparam name="TObjectId">The type of identifier used by the domain objects in the domain.</typeparam>
            <typeparam name="TBaseEvent">The base type or interface implemented by events in the domain.</typeparam>
            <nuget id="netfx-Patterns.EventSourcing"/>
        </member>
        <member name="M:EventQueryExtension.IEventQuery`2.Execute">
            <summary>
            Executes the query built using the fluent API 
            against the underlying store.
            </summary>
        </member>
        <member name="M:EventQueryExtension.IEventQuery`2.For``1">
            <summary>
            Filters events that target the given domain object type. Can be called 
            multiple times and will filter for any of the specified types (OR operator).
            </summary>
            <typeparam name="TObject">The type of the domain object to filter events for.</typeparam>
        </member>
        <member name="M:EventQueryExtension.IEventQuery`2.For``1(`0)">
            <summary>
            Filters events that target the given domain object type and identifier. Can be called 
            multiple times and will filter for any of the specified types and ids (OR operator).
            </summary>
            <typeparam name="TObject">The type of the domain object to filter events for.</typeparam>
            <param name="objectId">The domain object identifier to filter by.</param>
        </member>
        <member name="M:EventQueryExtension.IEventQuery`2.OfType``1">
            <summary>
            Filters events that are assignable to the given type. Can be called 
            multiple times and will filter for any of the specified types (OR operator).
            </summary>
            <typeparam name="TEvent">The type of the events to filter.</typeparam>
        </member>
        <member name="M:EventQueryExtension.IEventQuery`2.Since(System.DateTimeOffset)">
            <summary>
            Filters events that happened after the given starting date.
            </summary>
            <param name="when">The starting date to filter by.</param>
            <remarks>
            By default, includes events with the given date, unless the 
            <see cref="M:EventQueryExtension.IEventQuery`2.ExclusiveRange"/> is called to make the range exclusive.
            </remarks>
        </member>
        <member name="M:EventQueryExtension.IEventQuery`2.Until(System.DateTimeOffset)">
            <summary>
            Filters events that happened before the given ending date.
            </summary>
            <param name="when">The ending date to filter by.</param>
            <remarks>
            By default, includes events with the given date, unless the 
            <see cref="M:EventQueryExtension.IEventQuery`2.ExclusiveRange"/> is called to make the range exclusive.
            </remarks>
        </member>
        <member name="M:EventQueryExtension.IEventQuery`2.ExclusiveRange">
            <summary>
            Makes the configured <see cref="M:EventQueryExtension.IEventQuery`2.Since(System.DateTimeOffset)"/> and/or <see cref="M:EventQueryExtension.IEventQuery`2.Until(System.DateTimeOffset)"/> dates 
            exclusive, changing the default behavior which is to be inclusive.
            </summary>
        </member>
        <member name="M:QueryableEventStoreExtensions.ToExpression``3(EventQueryCriteria{``0},IQueryableEventStore{``0,``1,``2},System.Func{System.Type,System.String})">
            <summary>
            Converts a criteria object passed to the queryable event store 
            <see cref="M:IEventStore`2.Query(EventQueryCriteria{`0})"/> method 
            into a Linq expression that can be used directly as a filter (<c>Where</c>) 
            over the stored queryable event stream.
            </summary>
            <typeparam name="TObjectId">The type of identifier used by domain objects in the domain.</typeparam>
            <typeparam name="TBaseEvent">The base type or interface implemented by events in the domain.</typeparam>
            <typeparam name="TStoredEvent">The type of the stored event.</typeparam>
            <param name="criteria">The criteria that will be converted to a Linq expression.</param>
            <param name="store">The store to provide the query expression for.</param>
            <param name="typeNameConverter">The type name converter to use to transform the <see cref="T:System.Type"/> 
            filters in the criteria object into type name strings that are persisted by the store.</param>
        </member>
        <member name="M:QueryableEventStoreExtensions.ToExpression``3(IQueryableEventStore{``0,``1,``2},EventQueryCriteria{``0},System.Func{System.Type,System.String})">
            <summary>
            Converts a criteria object passed to the queryable event store 
            <see cref="M:IEventStore`2.Query(EventQueryCriteria{`0})"/> method 
            into a Linq expression that can be used directly as a filter (<c>Where</c>) 
            over the stored queryable event stream.
            </summary>
            <typeparam name="TObjectId">The type of identifier used by domain objects in the domain.</typeparam>
            <typeparam name="TBaseEvent">The base type or interface implemented by events in the domain.</typeparam>
            <typeparam name="TStoredEvent">The type of the stored event.</typeparam>
            <param name="store">The store to provide the query expression for.</param>
            <param name="criteria">The criteria that will be converted to a Linq expression.</param>
            <param name="typeNameConverter">The type name converter to use to transform the <see cref="T:System.Type"/> 
            filters in the criteria object into type name strings that are persisted by the store.</param>
        </member>
        <member name="M:QueryableEventStoreExtensions.CriteriaBuilder`2.Build">
            <summary>
            Builds the expression for the criteria.
            </summary>
        </member>
        <member name="M:QueryableEventStoreExtensions.CriteriaBuilder`2.EventObjectIdEquals(`0)">
            <devdoc>
            This is needed because == doesn't compile for TObjectId and calling CompareTo 
            wouldn't work on most non in-memory stores either.
            </devdoc>
        </member>
        <member name="T:Guard">
            <summary>
            Common guard class for argument validation.
            </summary>
            <nuget id="netfx-Guard" />
        </member>
        <member name="M:Guard.NotNull``1(System.Linq.Expressions.Expression{System.Func{``0}},``0)">
            <summary>
            Ensures the given <paramref name="value"/> is not null.
            Throws <see cref="T:System.ArgumentNullException"/> otherwise.
            </summary>
        </member>
        <member name="M:Guard.NotNullOrEmpty(System.Linq.Expressions.Expression{System.Func{System.String}},System.String)">
            <summary>
            Ensures the given string <paramref name="value"/> is not null or empty.
            Throws <see cref="T:System.ArgumentNullException"/> in the first case, or 
            <see cref="T:System.ArgumentException"/> in the latter.
            </summary>
        </member>
    </members>
</doc>
